//
//  ILBindDeviceModel.h
//  IMILabKit
//
//  Created by Roffa Zhou on 2022/3/23.
//

#import <Foundation/Foundation.h>


typedef NS_ENUM(NSUInteger, ILLinkType) {
    /// SDK自行决定在广播配网，热点配网，路由器配网，路由器配网中选择最优的配网方案；
    ILLinkTypeAuto,
    /// 设备广播配网方案,路由器广播报文与设备进行通信配对。对用户操作简单，但对手机和路由器有兼容性要求，成功率低于 热点配网
    ILLinkTypeBroadcast,
    /// 设备热点配网方案,一种通过 Wi-Fi 进行配网的方式。将手机连接到配网设备 Wi-Fi 热点后，SDK 与设备直接通过 Wi-Fi 进行通信配对。成功率高、可靠性好，但需要在多个WiFi间切换
    ILLinkTypeAP,
    /// 蓝牙配网方案1,SDK与设备直接通过蓝牙进行配网
    ILLinkTypeBLE_1,
    /// 蓝牙配网方案2，根据设备绑定要求选择
    ILLinkTypeBLE_2,
    /// 二维码配网方案
    ILLinkTypeQR,
    /// 有线配网,有线设备已通过网线连接着网络，设备激活过程中，用户无需输入路由器的名称和密码。
    ILLinkTypeWN,
    /// 网关子摄像机
    ILLinkTypePA,
    /// 
    ILLinkTypeWNQR,
    /// 本地设备配网,连接设备热点,采用TCP本地直连方式进行绑定
    ILLinkTypeLOCAL,
};

/// 绑定时创建"家"模式
typedef NS_ENUM (NSUInteger, ILDeviceBindHomeConfig){
    //默认值,创建家,这意味着设备会被绑定到家下面,附带房间管理等一系列功能
    ILDeviceBindHomeConfigDefault = 0,
    //不创建家,没有房间管理等功能
    ILDeviceBindHomeConfigWithoutHome,
};

NS_ASSUME_NONNULL_BEGIN

@interface ILBindDeviceModel : NSObject
@property(nonatomic, assign)ILDeviceBindHomeConfig homeConfig;//创建"家"模式
@property(nonatomic, assign)ILLinkType linkType;           //设备绑定类型
@property(nonatomic, copy)NSString *productKey;     //设备对应的pk值
//使用mode_1绑定时，下面两值必须赋值
@property(nonatomic, copy)NSString *productName;     //设备绑定时，给设备定义的设备名称
/**
 设备绑定时，从设备端获取到的设备名。单独进行ble_2绑定需要赋值，其他场景内部能够自动获取
 deviceName取值可通过ILBindObject对象的deviceName属性获取，当ble_1绑定完成时，此值存在
 */
@property(nonatomic, copy)NSString *deviceName;
@property(nonatomic, copy)NSString *categoryKey;     //给设备定义的所属类别。
//使用ble_2时下面的值必须赋值。除ble_1,其他类型也需要进行赋值操作
@property(nonatomic, copy)NSString * __nullable ssid;       //如蓝牙设备需要使用WiFi，此值需要赋值。(某些模式下(AP/QR/BC),必须是手机当前连接的wifi)
@property(nonatomic, copy)NSString * __nullable pwd;       //如蓝牙设备需要使用WiFi，此值需要赋值(某些模式下(AP/QR/BC),必须是手机当前连接的wifi)
@property(nonatomic, copy)NSString * __nullable defaultRoomName;    //房间默认名， 当设备需要区分房间存在时，此字段必须赋值
@property(nonatomic, copy)NSString * __nullable token;  //token,对于大部分绑定来说,这都是内部自动获取的,不需要传入,QR绑定需要传入,不传入内部也会自己去获取

@end

NS_ASSUME_NONNULL_END
